adding a details section for the implementation of some of the complex metaprogramming I'll be doing later