now buildable accepts multiple init methods and is fully extendable