Refactored base and added basic functionality