- allowing for mulitple stacks
- simplified the code and could probably place it under a define_method loop