#14 added ability for runtime + refactoring