all public methods are now moved to the top