Add in some further requirements - continue modularizing elements as needed