simplified the implementation to a properties object