Inspired by dropwizard components but plan to make enhancements to this in future